部署Spring Boot项目可以使用Maven命令mvn:clean package
将项目打包成只执行的jar文件,然后使用命令java -jar XX.jar
来执行。但这样做无法将shell命令行释放,关闭terminal后项目也随之关闭了。这里介绍在Linux系统中后台运行Spring Boot jar文件的方法。
实现这个功能主要依赖于Linux的nohup
命令。nohup
命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。
nohup
语法:
1 | nohup 命令 |
所以只需要在启动命令前加上nohup
命令,末尾加上&
即可:nohup java -jar XX.jar &
。
为了方便,我们可以编写启动脚本start.sh:
1 | nohup java -jar XX.jar & |
关停脚本stop.sh:
1 | PID=`ps -ef | grep sms-2.0.jar | grep -v grep | awk '{print $2}'` |
重启脚本run.sh:
1 | echo stop application |
在编写shell脚本的过程中遇到了两个问题:
执行
.sh
文件提示权限不足:解决办法:执行命令
chmod u+x XX.sh
赋予当前用于可执行的权限即可。提示/bin/bash^M: bad interpreter: 没有那个文件或目录。
问题出现的原因是shell脚本是在windows中编写的然后上传到Linux中的,出现了兼容性问题。解决办法:执行
vim XX.sh
打开shell文件,然后切换到命令模式,执行:set fileformat=unix
后保存退出即可。
使用了nohup
命令后,会在jar文件目录下生成一个nohup.out文件,可通过其观察当前项目的运行情况:
1 | ll |